#ifndef CONCRETE_VISITOR_H
#define CONCRETE_VISITOR_H

#include"visitor.h"
#include"element.h"
// 游客
class Tourist : public IVisitor
{
public:
    Tourist(string name):IVisitor(name){}
    virtual void Visit(IPlace *place) override {
        std::cout <<m_VisitorName<<" visiting the "<<place->GetName()<< std::endl;
    }

};

// 清洁工
class Cleaner : public IVisitor
{
public:
    Cleaner(string name):IVisitor(name){}
    virtual void Visit(IPlace *place) override {
        std::cout <<m_VisitorName<< " cleaning up the garbage of "<<place->GetName() << std::endl;
    }

};


#endif // CONCRETE_VISITOR_H
